<?php

class Application_Model_DbTable_User extends Zend_Db_Table_Abstract
{
     // nom de la table
    protected $_name = 'User';
    // clef primaire de la table
    protected $_primary = 'id';

    /**
     * Permet de récuperer tous les utilisateurs de la base
     * @return type tableau d'utilisateurs
     */
    public function getAll() {
        //$dbUser = new Admin_Model_DbTable_User();
        return $this->fetchAll()->toArray();
    }

    /**
     * Permet de récuperer un utilisateur grace à son id
     * @param type $id l'id
     * @return type tableau d'utilisateur
     */
    public function getById($id) {
        //$dbUser = new Admin_Model_DbTable_User();
        return $this->find($id);
    }

    /**
     *  Permet d'ajouter  à la bdd
     * @param type $firstname le prénom
     * @param type $lastname le nom
     * @param type $email l'email
     * @param type $password le mot de pass
     */
    public function add($firstname, $lastname, $email, $password) {
        //$users = new Admin_Model_DbTable_User();
        $datas = array(
            'firstname' => $firstname,
            'lastname' => $lastname,
            'email' => $email,
            'password' => md5($password)
        );
        $this->insert($datas);
        
    }

    /**
     *  Permet de modifier un utilisateur de la bdd
     * @param type $id l'id
     * @param type $firstname le prénom
     * @param type $lastname le nom
     * @param type $email l'email
     * @param type $password le mot de passe
     */
    public function modify($id, $firstname = '', $lastname = '', $email = '', $password = '') {
       // $users = new Admin_Model_DbTable_User();
        $datas = array(
            'firstname' => $firstname,
            'lastname' => $lastname,
            'email' => $email,
            'password' => md5($password)
        );
        $this->update($datas, array('id = ?' => $id));
    }

    /**
     * Permet de supprimer un utilisateur de la bdd
     * @param type $id l'id
     */
    public function delete($id) {
      //  $users = new Admin_Model_DbTable_User();
        $this->delete(array('id = ?' => $id));
    }

    /**
     * Permet de récuperer le nombre d'utilisateur dans la bdd
     * @return type
     * @throws Exception 
     */
    public function getCount() {
        $sql = 'select count(1) cnt from' . $_name;
        $stmt = $this->_db->query($sql);
        $results = $stmt->fetchAll();
        if ((sizeof($results) > 0) && (isset($results[0]['cnt']))) {
            return $results[0]['cnt'];
        }
        throw new Exception("Erreur : impossible d'obtenir le nombre d'utilisateur");
    }
}

